草庐IT

java - N个有序元素的组合

全部标签

ruby - 如何替换数组的元素?

如何替换数组中的元素?a=[1,2,3,4,5]我需要将5替换为[11,22,33,44].flatten!所以a现在变成了a=[1,2,3,4,11,22,33,44] 最佳答案 不确定您是否要替换特定值,但这可行:a=[1,2,3,4,5]b=[11,22,33,44]a.map!{|x|x==5?b:x}.flatten!这遍历a的值,当它找到5的值时,它用数组b替换该值,然后将数组展平为一个数组。 关于ruby-如何替换数组的元素?,我们在StackOverflow上找到一个类似

ruby - 从 Ruby 中的数组数组中的一列中选择所有元素?

我有一个数组:arr=[["Foo1","Bar1","1","W"],["Foo2","Bar2","2","X"],["Foo3","Bar3","3","Y"],["Foo4","Bar4","4","Z"]]我想要一个仅包含每个数组的第三列的数组:res=["1","2","3","4"]我该怎么做?我想输入如下内容:arr[][2]但考虑到更像Ruby,我尝试了:arr.select{|r|r[2]}但这会返回整行。 最佳答案 你想要arr.map{|row|行[2]}arr=[["Foo1","Bar1","1","W"

ruby-on-rails - 如何在不重复 nil 检查的情况下避免嵌套哈希中缺少元素的 NoMethodError?

我正在寻找一种避免在深度嵌套的哈希中的每个级别检查nil的好方法。例如:name=params[:company][:owner][:name]ifparams[:company]&¶ms[:company][:owner]&¶ms[:company][:owner][:name]这需要三项检查,并且代码非常丑陋。有什么办法可以解决这个问题? 最佳答案 引入了Ruby2.3.0amethodcalleddig在Hash和Array上。name=params.dig(:company,:owner,:name)如果在任

ruby - 在 Ruby 中将数组的数组组合成所有可能的组合,仅向前

我有一个数组数组,像这样:[['1','2'],['a','b'],['x','y']]我需要将这些数组组合成一个字符串,其中包含所有三个集合的所有可能组合,仅向前。我已经看到很多以任何顺序排列的集合的所有可能组合的示例,这不是我想要的。例如,我不希望第一组中的任何元素出现在第二组之后,或者第三组中的任何元素出现在第一组或第二组之前,依此类推。因此,对于上面的示例,输出将是:['1ax','1ay','1bx','1by','2ax','2ay','2bx','2by']数组的数量和每组的长度是动态的。有人知道如何在Ruby中解决这个问题吗? 最佳答案

ruby - 检查数组的任何元素是否满足条件

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:checkifvalueexistsinarrayinRuby我有一个循环遍历字符串数组并在任何字符串包含字符串“狗”时返回true的方法。它正在工作,但多个return语句看起来很乱。有没有更Eloquent方式来做到这一点?defhas_dog?(acct)[acct.title,acct.description,acct.tag].eachdo|text|returntrueiftext.include?("dog")endreturnfalseend

ruby - 类似 tap 的组合方法,但能够返回不同的值?

我正在经历一个尝试避免临时变量和过度使用条件的阶段,在这个阶段我可以使用更流畅的编码风格。我非常喜欢在想要获取需要返回的值的地方使用#tap,但在返回它之前对其进行一些处理。deffluid_methodsomething_complicated(a,b,c).tapdo|obj|obj.update(:x=>y)endendvs。程序:defnon_fluid_methodobj=something_complicated(a,b,c)obj.update(:x=>y)obj#显然上面的示例很简单,但这在ruby​​社区中仍然是一种非常常见的编码风格。有时我也会使用#inject通过

ruby-on-rails - 如何拥有多个版本的 Ruby 和 Rails,以及它们在 Windows 上的组合?

既然Windows不支持rvm(Ruby版本管理器),那我们怎么办Ruby1.8.7,Rails2.3.8Ruby1.8.7,Rails3.0.0Ruby1.9.2,Rails3.0.0在同一台电脑上?可以用虚拟机,但是有点麻烦。 最佳答案 使用uru.它是一个多平台的ruby​​环境管理器。您可以在此处下载Windows版本:https://bitbucket.org/jonforums/uru/wiki/Downloads安装工具假设C:\tools在PATH上并且uru_rt.exe被提取到C:\toolsC:\tools>u

ruby - 如何从 ruby​​ 中的哈希中获取前 n 个元素?

我有一个哈希,我已经使用值对它进行了排序@friends_comment_count.sort_by{|k,v|-v}现在我只想获取前五个元素的哈希值。一种方法是使用计数器并在其为5时中断。在ruby​​中首选的方法是什么?谢谢 最佳答案 h={'a'=>10,'b'=>20,'c'=>30}#getthefirsttwopHash[*h.sort_by{|k,v|-v}[0..1].flatten]已编辑:#getthefirsttwo(moreconcisely)pHash[h.sort_by{|k,v|-v}[0..1]]

ruby - 访问 ruby​​ 中嵌套哈希的元素

这个问题在这里已经有了答案:RubyStyle:Howtocheckwhetheranestedhashelementexists(16个答案)HowtoavoidNoMethodErrorfornilelementswhenaccessingnestedhashes?[duplicate](4个答案)关闭7年前。我正在开发一个用ruby​​编写的小实用程序,它广泛使用嵌套哈希。目前,我正在检查对嵌套哈希元素的访问,如下所示:structure={:a=>{:b=>'foo'}}#Iwantstructure[:a][:b]value=nilifstructure.has_key?(:

ruby - 确保元素不存在于 Capybara

使用Capybara,我需要断言表单元素不存在,例如,“那么我不应该看到“用户名”文本字段”。如果找不到元素,find会抛出异常,这是我想到的最好的方法。有没有更好的办法?Then/^Ishouldnotseethe"([^\"]+)"([^\s]+)field$/do|name,type|begin#Capybarathrowsanexceptioniftheelementisnotfoundfind(:xpath,"//input[@type='#{type}'and@name='#{name}']")#Wegethereifwefindit,sowewantthissteptof